The present invention relates generally to data communications, and particularly to implementing multiple classes of service within a half-duplex Ethernet media access controller with multiple priority-based output buffers.
Ethernet is getting into the home in a big way. Consumers are increasingly taking advantage of the availability of broadband Internet access to the home. This broadband access generally takes the form of digital subscriber line (DSL) or a coaxial cable link that connects to a local area network (LAN) within the home through a DSL or cable modem. All cable and DSL modems terminate their LAN connection with a 10/100BASE-T Ethernet link. Historically this link serviced one computer. However, the current residential trend is toward multiple computers sharing the link. One solution is to connect the computers to the DSL or cable modem using a half-duplex hub.
Home gateways have started to address these issues by initially adding repeaters and now switches along with firewall and router support in a single unit. The next issue to be addressed by these units is quality of service (QoS), also referred to as “classes of service.” The class of service capability defined by the IEEE 802.1 standard divides network traffic into several classes of service based on sensitivity to transfer latency, and prioritizes these classes of service. The highest class of service is usually devoted to network control traffic, such as switch-to-switch configuration messages. The remaining classes are usually devoted to user traffic. The two highest user traffic classes of service are reserved for streaming audio and streaming video. Because the ear is more sensitive to missing data than the eye, the highest of the user traffic classes of service is reserved for streaming audio. The remaining lower classes of service are reserved for traffic that is less sensitive to transfer latency, such as electronic mail and file transfers.
However, current QoS implementations do not work on half-duplex links. A network is a collection of nodes interconnected by links. Each link may be full-duplex or half-duplex. Whether a link is full-duplex or half-duplex is determined by the physical layers of the nodes connected by the link. The physical layers attempt to auto-negotiate with each other to determine whether the link is to be full-duplex or half-duplex. If either of the nodes is unable to auto-negotiate, or if one of nodes is a repeater, the link becomes half-duplex, and so cannot support simultaneous two-way traffic.
FIG. 1 shows a conventional implementation 100 of a home network with broadband access. A network 102 such as the Internet is connected by a broadband link to a modem 104. Modem 104 is connected by an Ethernet link to a terminal 114 of a port 108A of a conventional switch 106. Port 108B of switch 106 is connected by a terminal 116 to a repeater 110A that serves two personal computers 112A and 112B. Port 108C of switch 106 is connected to a repeater 110B that can serve additional computers. Repeaters 110 cannot auto-negotiate. Therefore the links connecting computers 112 to switch 106 must be half-duplex.
FIG. 2 shows a portion of a conventional half-duplex switch 206 that can act as switch 106 in the home network 100 of FIG. 1. Each port 205 is connected to a channel such as the broadband links of FIG. 1. These channels can include fiber optic links, wireline links, wireless links, and the like. Ports 205A and 205B communicate with each other through a switch controller 202 and a memory 204. Each port includes a media access controller (MAC) 206. MAC 206A includes a receiver 210A, a transmitter 212A, and a MAC controller 208A. Receiver 210A receives data arriving at terminal 214A, and places the data in memory 204 according to control signals asserted by switch controller 202. Transmitter 212A retrieves data from memory 204 according to control signals asserted by switch controller 202 and transmits the data at terminal 214B. MAC 206A includes a receiver 210B, a transmitter 212B, and a MAC controller 208B. Receiver 210B receives data arriving at terminal 216A, and places the data in memory 204 according to control signals asserted by switch controller 202. Transmitter 212B retrieves data from memory 204 according to control signals asserted by switch controller 202 and transmits the data at terminal 216B.
FIG. 3 shows a simplified version of a transmit process 300 of switch 206 according to the IEEE 802.1 standard. A frame of data received on some port 205 of switch 206 is stored in memory 204. After switch controller 202 determines the port 205 from which the frame should be transmitted, the frame is ready for transmission. When a MAC controller 208 is ready to transmit a frame, switch controller 202 assembles a frame that is ready for transmission (step 302) by moving the pointer to the frame into the MAC 206. MAC controller 208 includes an attempt counter that counts the number of transmission attempts for the current frame. When a new frame is assembled for a MAC 206, the MAC controller 208 resets the attempt counter to zero (step 304).
Transmitter 212 then waits until its channel is not busy (step 306). Transmitter 212 then waits the interframe gap (step 308) before starting transmission of the frame (step 310). Transmitter 212 monitors the channel for collisions during transmission of the frame (step 312). If the transmission is completed without collision (step 314), MAC controller 208 asserts a “completed” signal, causing switch controller 202 to assemble a new frame (step 302). However, if a collision is detected, transmitter 212 terminates the transmission (step 316) and sends a jam signal (step 318) to ensure that the other MAC involved in the collision detects the collision.
When a transmitter 212 detects a collision, MAC controller 208 increments the attempt counter (step 320). If the count maintained by the attempt counter exceeds a predetermined attempt threshold (step 322), the transmission is deemed unsuccessful, the frame is discarded, and a new frame is assembled (step 302). However, if the attempt threshold has not been exceeded, MAC controller 208 computes a back-off period (step 326) and waits until the back-off period has elapsed before attempting to transmit the frame again (step 328).
Current QoS implementations that implement process 300 cannot function on half-duplex links for the following reason. Current QoS implementations can cause high-priority traffic to be delayed by low-priority traffic on a half-duplex link. The IEEE 802.1 standard requires the transmission of a packet be completed before transmitting the next packet. When the transmission of a low-priority packet is delayed by multiple collisions, any higher-priority packets behind the low-priority packet in the queue must wait until the collisions clear and the transmission of the low-priority packet is completed. The back-off algorithm can cause this delay to be as much as 7000 packet times.